<?php
/**********************返回值性方法工具******************************/

/**
 * [retSucc description]
 * @Description 正确返回数据
 * @Author      FengPQ
 * @DateTime    2020-06-13T23:42:48+0800
 * @param       array                    $data   [数据]
 * @param       array                    $append [其他数据]
 * @return      [type]                           [description]
 */
function retSucc($data = array(), $append = array())
{
    return retJson(ErrCode::ErrCode_00000, $data, $append);
}
/**
 * @Desc     返回值-Controller返回页面去
 * @Author   pekey
 * @DateTime 2020-05-12T19:25:48+0800
 * @param    errorCode,错误代码枚举，包含错误代码，及错误信息;主动拼接非业务信息，如token等
 *           当ret_status为false，只需要弹出错误，不需要修改处理slient数据
 * @param    array，数据
 * @param    array，其他数据
 * @return   [type]，返回json类型
 */
function retJson($errorCode, $data = array(), $append = array())
{
    $ret = array();

    //报错信息头
    $ret[RET_CODE] = $errorCode[TPEnum::Value];
    $ret[RET_MSG] = $errorCode[TPEnum::Caption];
    $ret[RET_EN_MSG] = $errorCode[TPEnum::Append1];
    $ret[RET_STATUS] = checkRetStatus($errorCode);

    //数据信息
    if (is_array($data)) {
        $ret[RET_DATA] = json_encode($data, JSON_UNESCAPED_UNICODE);
    } else {
        $ret[RET_DATA] = $data;
    }

    //额外数据信息
    if (is_array($append)) {
        $ret[RET_APPEND] = json_encode($append, JSON_UNESCAPED_UNICODE);
    } else {
        $ret[RET_APPEND] = $append;
    }

    //账户token
    if (isset($_SESSION[SESS_HEADER])) {
        $CI = &get_instance();
        $ret[RET_ACCESSTOKEN] = $CI->cache->redis->get(redisLongToken($_SESSION[SESS_HEADER]['uuid'], $_SESSION[SESS_HEADER]['source']));
    }

    return json_encode($ret, JSON_UNESCAPED_UNICODE);
}

/**
 * @Desc     返回值-Service返回Controller
 * @Author   pekey
 * @DateTime 2020-05-12T19:25:48+0800
 * @param    string,返回信息
 * @param    boolean，返回是否正确
 * @param    array，数据
 * @param    array，其他数据
 * @return   [type]，返回json类型
 */
function retArray($errorCode, $data = array(), $append = array())
{
    $ret = array();

    $ret[RET_CODE] = $errorCode[TPEnum::Value];
    $ret[RET_MSG] = $errorCode[TPEnum::Caption];
    $ret[RET_EN_MSG] = $errorCode[TPEnum::Append1];
    $ret[RET_STATUS] = checkRetStatus($errorCode);
    $ret[RET_DATA] = $data;
    $ret[RET_APPEND] = $append;

    //账户token
    if (isset($_SESSION[SESS_HEADER])) {
        $CI = &get_instance();
        $ret[RET_ACCESSTOKEN] = $CI->cache->redis->get(redisLongToken($_SESSION[SESS_HEADER]['uuid'], $_SESSION[SESS_HEADER]['source']));
    }

    return $ret;
}

/**
 * [checkRetStatus 通过errcode判断是否属于成功]
 * @Description 通过errcode判断是否属于成功
 * @Author      FengPQ
 * @DateTime    2020-05-15T00:06:13+0800
 * @param       [type]                   $errorCode [错误代码]
 * @return      [type]                              [布尔类型]
 */
function checkRetStatus($errorCode)
{
    if ($errorCode == ErrCode::ErrCode_00000) {
        return true;
    }
    return false;
}

/**
 * @Desc     retArray转retJson
 * @Author   pekey
 * @DateTime 2020-05-12T19:26:54+0800
 * @param    [type]
 * @return   [type]
 */
function toRetJson($retArray)
{
    $errorCode = (new ErrCode)->getByValue($retArray[RET_CODE]);
    return retJson($errorCode, $retArray[RET_DATA], $retArray[RET_APPEND]);
}
